import request from '@/utils/request'

/**
 * 词源相关API
 */
export default {
  /**
   * 获取词源列表
   * @param {Object} params - 查询参数
   * @returns {Promise}
   */
  getEtymologies(params) {
    return request({
      url: '/etymologies',
      method: 'get',
      params
    })
  },

  /**
   * 获取词源详情
   * @param {Number|String} id - 词源ID
   * @returns {Promise}
   */
  getEtymology(id) {
    return request({
      url: `/etymologies/${id}`,
      method: 'get'
    })
  },

  /**
   * 创建词源
   * @param {Object} data - 词源数据
   * @returns {Promise}
   */
  createEtymology(data) {
    return request({
      url: '/etymologies',
      method: 'post',
      data
    })
  },

  /**
   * 更新词源
   * @param {Number|String} id - 词源ID
   * @param {Object} data - 词源数据
   * @returns {Promise}
   */
  updateEtymology(id, data) {
    return request({
      url: `/etymologies/${id}`,
      method: 'put',
      data
    })
  },

  /**
   * 删除词源
   * @param {Number|String} id - 词源ID
   * @returns {Promise}
   */
  deleteEtymology(id) {
    return request({
      url: `/etymologies/${id}`,
      method: 'delete'
    })
  },

  /**
   * 获取单词的词源信息
   * @param {Number|String} wordId - 单词ID
   * @returns {Promise}
   */
  getWordEtymology(wordId) {
    return request({
      url: `/words/${wordId}/etymology`,
      method: 'get'
    })
  },

  /**
   * 搜索词源
   * @param {Object} params - 搜索参数
   * @returns {Promise}
   */
  searchEtymologies(params) {
    return request({
      url: '/etymologies/search',
      method: 'get',
      params
    })
  },

  /**
   * 根据语言获取词源
   * @param {String} language - 语言代码
   * @param {Object} params - 查询参数
   * @returns {Promise}
   */
  getEtymologiesByLanguage(language, params) {
    return request({
      url: `/etymologies/languages/${language}`,
      method: 'get',
      params
    })
  },

  /**
   * 获取词源历史
   * @param {Number|String} wordId - 单词ID
   * @returns {Promise}
   */
  getWordEtymologyHistory(wordId) {
    return request({
      url: `/words/${wordId}/etymology-history`,
      method: 'get'
    })
  },

  /**
   * 获取相关词源的单词
   * @param {Number|String} etymologyId - 词源ID
   * @param {Object} params - 查询参数
   * @returns {Promise}
   */
  getEtymologyWords(etymologyId, params) {
    return request({
      url: `/etymologies/${etymologyId}/words`,
      method: 'get',
      params
    })
  }
} 